package com.hongyi.app.mapper;

import com.hongyi.app.entity.RolePermission;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author HongYi
 */
public interface RolePermissionMapper {

    /**
     * 插入一条记录
     *
     * @param rolePermission 用户实体
     * @return 操作影响的条目数
     */
    int insert(RolePermission rolePermission);

    /**
     * 根据id修改中间表记录
     *
     * @param rolePermission
     */
    int updateById(RolePermission rolePermission);

    /**
     * 按id删除中间表记录
     * @param id
     */
    int deleteById(@Param("id") Integer id);

    /**
     * 按roleId删除全部中间表记录
     *
     * @param roleId
     */
    int deleteByRoleId(@Param("roleId") Integer roleId);

    /**
     * 按PermissionId删除全部中间表记录
     *
     * @param permissionId
     */
    int deleteByPermissionId(@Param("permissionId") Integer permissionId);

    /**
     * 通过id查询中间表记录，分步1-1查询角色和权限
     * @param id
     * @return
     */
    RolePermission selectById(Integer id);

    /**
     * 全查中间表记录，分步1-1查询角色和权限
     * @return
     */
    List<RolePermission> list();

    /**
     * 通过RoleId查询中间表记录，分步1-1查询角色和权限
     * @return
     */
    List<RolePermission> selectByRoleId(Integer roleId);

    /**
     * 通过PermissionId查询中间表记录，分步1-1查询角色和权限
     * @return
     */
    List<RolePermission> selectByPermissionId(Integer permissonId);

    /**
     * 通过roleIds批量删除中间表记录
     * @param roleIds
     * @return 影响到行数
     */
    int  delectByRoleIds(Integer[] roleIds);

    /**
     * 通过permissionIds批量删除中间表记录
     * @param permissionIds
     * @return 影响到行数
     */
    int  delectByPermissionIds(Integer[] permissionIds);
}
